package services;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import models.Mensaje;
import util.Queries;
import enums.RecipientType;

public class MessagingSrv {

	public static void notifySomething() {

	}

	public static List<String> getSuscripcionesEstudiante(Long idEstudiante) {
		Object[] ag = DAO.executeNative(Queries.getEstudianteZoomOut(), 1,
				"idEstudiante", idEstudiante);
		List<String> ae = new ArrayList<String>();
		ae.add(RecipientType.ESTUDIANTE.name() + idEstudiante);
		ae.add(RecipientType.CURSO.name() + ag[1]);
		ae.add(RecipientType.GRADO.name() + ag[2]);
		ae.add(RecipientType.COLEGIO.name() + ag[3]);

		return ae;
	}

	@SuppressWarnings("unchecked")
	public static List<Mensaje> getMensajes(List<String> suscripciones,
			Long since, Long until) {
		until = until == 0 ? Long.MAX_VALUE : until;
		Set<String> channels = new HashSet<String>();
		for (String ae : suscripciones) {
			System.out.println(ae);
			channels.add(ae);
		}

		List<Mensaje> mensajes = (List<Mensaje>) DAO
				.execute(
						"SELECT DISTINCT m FROM Mensaje m join m.recipients rs WHERE "
								+ "m.fechaExacta >= :since AND m.fechaExacta <= :until AND "
								+ "CONCAT(rs.tipo,rs.idRecipient) IN :channels ",
						-1, "channels", channels, "since", since, "until",
						until);

		return mensajes;
	}

	public static void main(String[] args) {
		System.out.println(System.currentTimeMillis() - 1407529757090l);

	}
}
